雖然理想中的 Clean Code 應該具備自我解釋的能力,但實際在開發過程中,撰寫註解仍然是必要的,特別是在協作開發和專案交接的情況中。以下是撰寫註解的主要原因:
提醒
然而,撰寫註解在某些情況下雖然重要,但不應該當作掩飾品質差的程式碼之功用。應該以良好的命名和結構來減少對註解的依賴,但在面對複雜邏輯、特定業務需求或團隊合作時,適當的註解仍然是不可或缺的輔助手段。
註解撰寫原則:
範例 1. function 底下請寫註解、業務功能說明、return 說明
function calculateDiscountedPrice(price, discount) {
/* 計算商品折扣價格(title)
   1. 如果折扣大於 50%,則視為不合法,將折扣設為 50%,避免極端促銷導致的虧損。(說明 1:業務功能需求。)
   2. return 計算後的折扣價格(說明2:說明結果。)
*/
    if (price < 0) {
        throw new Error("價格不能為負數");
    }
    
    if (discount > 0.5) {
        discount = 0.5;
    }
    return price * (1 - discount);
}
let price = 100;
let discount = 0.6;
console.log(calculateDiscountedPrice(price, discount));
範例 2. 接外部 API 、TO-DO 提醒
async function getWeatherData(city) {
/* 向外部天氣 API 請求天氣資料(title)
   1. TO-DO 錯誤檢查強化:應更具體地區分錯誤的類型,例如是否是網路連接問題、API 回應格式錯誤、或是伺服器端的問題。
*/
    const apiKey = "YOUR_API_KEY";
    const apiUrl = `https://api.weather.com/v3/weather/forecast?city=${city}&key=${apiKey}`;
    try {
        
        const response = await fetch(apiUrl);
        // 檢查API回應是否正常
        if (!response.ok) {
            throw new Error("無法獲取天氣數據");
        }
        // 返回JSON格式的天氣數據
        return await response.json();
    } catch (error) {
        // TODO: 錯誤處理待改善,應加強錯誤檢查邏輯
        console.error("獲取天氣數據時發生錯誤:", error);
    }
}
getWeatherData("Taipei").then(data => console.log(data));